/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Simulacion.Controlador;

import com.dp1.pucp.Modelo.Clases.Maquina;
import com.dp1.pucp.Simulacion.DAO.SimulacionDAO;
import com.dp1.pucp.Simulacion.VIsta.AsignacionEmpleadosGUI;
import com.dp1.pucp.Simulacion.VIsta.AsignacionMaquinasGUI;
import com.dp1.pucp.Simulacion.VIsta.DetalleMaquinaGUI;
import com.dp1.pucp.Simulacion.VIsta.MantSimulacionGUI2;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JComboBox;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

/**
 *
 * @author Rodrigo
 */
public class AsignacionMaquinasControlador {
    
    private AsignacionMaquinasGUI vistaMaquinas;
    private SimulacionDAO dao;
    private DetalleMaquinaGUI vistaDetalle;
    private ArrayList<Maquina> arregloMaquinas;
    private ArrayList<JComboBox> arregloCombos;
    
    
    
    public AsignacionMaquinasControlador(SimulacionDAO dao, AsignacionMaquinasGUI vista, MantSimulacionGUI2 vistaPadre, ArrayList<Maquina> arreglo){
        
        this.vistaMaquinas=vista;
        
        this.arregloMaquinas=arreglo;
        this.ActualizarTabla();
        vistaMaquinas.addGuardarListener(new guardarListener());
        vistaMaquinas.addCancelarListener(new cancelarListener());
        arregloCombos= new ArrayList();
//        vistaMaquinas.addExaminarListener(new examinarListener());
        
        
    }
    
    public AsignacionMaquinasControlador getControlador(){    
        //metodo para obtener el controlador
        return this;     
    }
    
    public void ActualizarTabla(){
        
        this.LimpiarDatos();
        this.llenaGrilla(this.arregloMaquinas);
    }
    
    public void llenaGrilla(ArrayList<Maquina> lista){   
        JComboBox comboBox = new javax.swing.JComboBox();
                 comboBox.addItem("SELECCIONAR");
                 comboBox.addItem("UTILIZABLE");
                 comboBox.addItem("NO UTILIZABLE");
                 comboBox.addItem("EN MANTENIMIENTO");
       
        if(lista!=null){ 
            
            ((DefaultTableModel) vistaMaquinas.getTabla().getModel()).setRowCount(0);
            TableColumn columna =vistaMaquinas.getTabla().getColumnModel().getColumn(2);
            
            columna.setCellEditor(new javax.swing.DefaultCellEditor(comboBox));
            for (int i = 0; i<lista.size();i++){
                ((DefaultTableModel) vistaMaquinas.getTabla().getModel()).setRowCount(vistaMaquinas.getTabla().getRowCount()+1);
                vistaMaquinas.getTabla().setValueAt(lista.get(i).getCodigo(),i,0);
                vistaMaquinas.getTabla().setValueAt(lista.get(i).getTipomaquina().getNombre(),i,1);
                vistaMaquinas.getTabla().setValueAt(lista.get(i).getMaxProduccion(),i,3);
                /* 
                */               
                if(lista.get(i).getEstado() ==0){
                    vistaMaquinas.getTabla().setValueAt("UTILIZABLE",i,2);
                }
                if(lista.get(i).getEstado() ==1){
                    vistaMaquinas.getTabla().setValueAt("NO UTILIZABLE",i,2);
                }
                if(lista.get(i).getEstado() ==2){
                    vistaMaquinas.getTabla().setValueAt("EN MANTENIMIENTO",i,2);
                }
             }
        }
    }
    
    public void LimpiarDatos(){    
        ((DefaultTableModel) vistaMaquinas.getTabla().getModel()).setRowCount(0); 
    }
    
    class guardarListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            int bandera=0;
            for (int i = 0; i<arregloMaquinas.size();i++){
                ((DefaultTableModel) vistaMaquinas.getTabla().getModel()).setRowCount(vistaMaquinas.getTabla().getRowCount()+1); 
                  if (vistaMaquinas.getTabla().getValueAt(i, 2)=="UTILIZABLE"){
                      arregloMaquinas.get(i).setEstado(0);
                      bandera=1;
                  }
                  if (vistaMaquinas.getTabla().getValueAt(i, 2)=="NO UTILIZABLE"){
                      arregloMaquinas.get(i).setEstado(1);
                      bandera=1;
                  }
                  if (vistaMaquinas.getTabla().getValueAt(i, 2)=="EN MANTENIMIENTO"){
                      arregloMaquinas.get(i).setEstado(2);
                      bandera=1;
                  }
            }
            if (bandera==0){
                vistaMaquinas.mostrarError("No se realizaron cambios");
            }
            if (bandera==1){
                vistaMaquinas.mostrarAviso("Se han guardado los cambios");
            }
        }
        
    }
    
    class examinarListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            
            int sel = vistaMaquinas.getFilaSel();
            if (sel!=-1){
                Maquina maq = arregloMaquinas.get(sel);
                DetalleMaquinaGUI gui = new DetalleMaquinaGUI(vistaMaquinas.getPadre(),true);
                gui.setTitle("Detalle de Maquina");
                AsignacionMaquinasControlador padre = getControlador();
                DetalleMaquinaControlador controlador = new DetalleMaquinaControlador(maq,gui,padre);            
                gui.setVisible(true);  
            }
            else {
                vistaMaquinas.mostrarError("Debe seleccionar una maquina");
            }      
        }    
    }
    
    
    class cancelarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            
            vistaMaquinas.dispose();
            
        }
        
    }
}
